#ifndef GLOBALS_H
#define GLOBALS_H

#include <atomic>
#include <mutex>
#include <condition_variable>
#include <vector>
#include "unitree_arm_sdk/control/unitreeArm.h"  // 你已有的头
#include "unitree_arm_sdk/thirdparty/robotics.h" // 你已有的头

// ----------- 全局标志/互斥量/队列 -----------
extern std::atomic<bool> exit_flag;          // 退出标志
extern std::atomic<bool> exit_flag_motor;    // 电机线程退出标志
extern std::condition_variable force_cv;     // 用于条件通知
extern std::atomic<bool> g_hasNewPacket;     // 是否有新包可用
extern std::mutex g_latestMutex;             // 保护 g_latestPacket
extern std::vector<unsigned char> g_latestPacket;

extern float force[6];           // 全局力数据
extern std::mutex force_mutex;
extern std::mutex posture_mutex; // 保护 g_serverDesPosture
extern UNITREE_ARM::Vec6 g_serverDesPosture;

// 机械臂电机指令
enum class MotorCommand {
    NONE,
    ENABLE,
    DISABLE
};
extern std::atomic<MotorCommand> g_motorCmd;

#endif // GLOBALS_H
